package br.com.financas.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.com.financas.abstractions.IContaService;
import br.com.financas.entity.Conta;
import br.com.financas.entity.Usuario;
import br.com.financas.service.ContaService;

@ManagedBean
@ViewScoped
public class ListarContasBean extends AbstractBean implements Serializable {

	private static final long serialVersionUID = 1L;

	@ManagedProperty(value = UsuarioBean.INJECTION_NAME)
	private UsuarioBean usuarioBean;
	private Conta contaSelecionada;
	private Usuario usuario = new Usuario();
	private List<Conta> contas = new ArrayList<Conta>();
	private IContaService<Conta> contaService = new ContaService();

	public List<Conta> getContas() {
		usuario = usuarioBean.getUsuario();
		contas = contaService.obterPorUsuario(usuario);

		return contas;
	}

	public Conta getContaSelecionada() {
		return contaSelecionada;
	}

	public void setContaSelecionada(Conta contaSelecionada) {
		this.contaSelecionada = contaSelecionada;
	}

	public void removerConta() throws Exception {
		if (contaService.validaDeletar(contaSelecionada))
				contas.remove(getContaSelecionada());

	}

	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}
}
